package com.h5ve.toolkit.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.h5ve.data.annotation.Excel;
import com.h5ve.data.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.ArrayList;
import java.util.List;

;

/**
 * @author Wings
 * @date 2024-8-18
 *
 * @description 页面管理对象 Form
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("dev_page_info")
public class PageInfo extends BaseEntity{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    @TableId
    private Long id;

    /** 表单名称 */
    @Excel(name = "表单名称")
    private String name;

    /** 表单编码 */
    @Excel(name = "表单编码")
    private String code;

    /** 表单类型 */
    @Excel(name = "表单类型")
    private String type;

    /** 图标 */
    private String icon;
    /**
     * 父级编号
     */
    private Long parentId;

    private Long applicationId;

    /** 数据库连接 */
    private String dsAlias;
    /** 表名 */
    @Excel(name = "表名")
    private String tableName;

    /** 页面数据 */
    @Excel(name = "页面数据")
    private String pageData;

    /** 流程数据 */
    @Excel(name = "流程数据")
    private String flowData;

    /** 是否自动建表 */
    @Excel(name = "是否自动建表")
    private String autoCreate;

    /** 版本号 */
    @Excel(name = "版本号")
    private String version;

    /**
     * 是否为主版本
     */
    private String isMain;

    /**
     * 排序
     */
    private Integer sort;

    /** 状态 */
    private String status;

    /**
     * 父级菜单
     */
    private Long menuId;

    /**
     * 树编码字段
     */
    @TableField(exist = false)
    private String treeId;

    /**
     * 树父编码字段
     */
    @TableField(exist = false)
    private String treeParentId;

    /**
     * 树名称字段
     */
    @TableField(exist = false)
    private String treeName;

    /**
     * 主子表信息  json串格式
     * [{tableName:'表名',foreignKey:'外键名', 'code': 表的唯一标识}]
     */
    @TableField(exist = false)
    private String childTable;

    @TableField(exist = false)
    private List<Long> menuIds;

    /**
     * 分组ids
     */
    @TableField(exist = false)
    private Long[] groupIds;

    /**
     * 是否有填报表单
     */
    @TableField(exist = false)
    private String isConfig;

    /**
     * 生成方式
     */
    @TableField(exist = false)
    private String genWay;

    /**
     * 表全名
     */
    @TableField(exist = false)
    private String fullTableName;

    /**
     * 子页面
     */
    @TableField(exist = false)
    private List<PageInfo> children = new ArrayList<PageInfo>();
}
